package  main.java.leetcode.editor.cn;
//2022-04-03 14:12:52
//给你一个二维整数数组 logs ，其中每个 logs[i] = [birthi, deathi] 表示第 i 个人的出生和死亡年份。 
//
// 年份 x 的 人口 定义为这一年期间活着的人的数目。第 i 个人被计入年份 x 的人口需要满足：x 在闭区间 [birthi, deathi - 1] 内
//。注意，人不应当计入他们死亡当年的人口中。 
//
// 返回 人口最多 且 最早 的年份。 
//
// 
//
// 示例 1： 
//
// 输入：logs = [[1993,1999],[2000,2010]]
//输出：1993
//解释：人口最多为 1 ，而 1993 是人口为 1 的最早年份。
// 
//
// 示例 2： 
//
// 输入：logs = [[1950,1961],[1960,1971],[1970,1981]]
//输出：1960
//解释： 
//人口最多为 2 ，分别出现在 1960 和 1970 。
//其中最早年份是 1960 。 
//
// 
//
// 提示： 
//
// 
// 1 <= logs.length <= 100 
// 1950 <= birthi < deathi <= 2050 
// 
// Related Topics 数组 计数 
// 👍 38 👎 0

import java.util.*;

class MaximumPopulationYear {
    public static void main(String[] args) {
        //创建该题目的对象方便调用
        Solution solution = new MaximumPopulationYear().new Solution();
        int[][] test = {{1993,1999},{2000,2010}};
        System.out.println(solution.maximumPopulation(test));
    }
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int maximumPopulation(int[][] logs) {

        int[] dp = new int[101];
        int initialTime = 1950;

        for(int i = 0;i<logs.length;i++){
            int key = logs[i][0];
            while (key<logs[i][1]){
                //为当前年份赋予人数
                dp[key-initialTime]++;
                key++;
            }
        }
        int maxPeople = 0;
        int year = 0;
        for(int i = 0;i<dp.length;i++){
            if(dp[i]>maxPeople){
                maxPeople = dp[i];
                year = initialTime+i;
            }
        }
        return year;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
